package router

import (
	"goframe-zc/api/v1/lhbd"
	"goframe-zc/api/v1/user"
	"goframe-zc/api/v1/zlyc"
	"goframe-zc/utility"

	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func init() {
	s := g.Server()

	// 全局跨域中间件（允许前端调用）
	s.Use(middlewareCORS)

	// API路由组（v1版本）,不需要jwt
	apiGroup := s.Group("/api/v1")
	{
		// 用户相关接口
		userGroup := apiGroup.Group("/user")
		{
			userGroup.POST("/register", user.Register) // 注册（无需认证）
			userGroup.POST("/login", user.Login)       // 登录（无需认证）
			//userGroup.GET("/info", user.Info)          // 获取信息（需JWT认证）
		}
		// 莲花宝典平移到智链影创
		apiGroup.GET("/lhbd_to_zlyc", lhbd.LhbdToZlyc)
		// 智链影创-运营中心-每日业绩统计
		apiGroup.GET("/zlyc_center_day", zlyc.ZlycCenterDay)
		// 智链影创-棘祥源平移-未入单用户提现统计
		apiGroup.GET("/zlyc_jxy_withdraw", zlyc.ZlycJxyWithdraw)
	}
	//s := ghttp.GetServer()
	//s.Use(middlewareCORS)
	// 2. 需要JWT认证的路由分组 为整个分组绑定JWT中间件
	authGroup := s.Group("/api/v1")
	authGroup.Middleware(middlewareJWT)
	{
		authGroup.GET("/user/info", user.Info)              // 用户信息接口（需JWT）
		authGroup.GET("/mall/order_list", user.OrderList)   // 用户信息接口（需JWT）
		authGroup.GET("/mall/order_list2", user.OrderList2) // 用户信息接口（需JWT）
	}
}

// 跨域中间件
func middlewareCORS(r *ghttp.Request) {
	r.Response.CORSDefault() // 允许所有跨域请求（生产环境可限制Origin）
	r.Middleware.Next()
}

// JWT认证中间件（保护需要登录的接口）
func middlewareJWT(r *ghttp.Request) {
	// 从请求头获取Authorization（格式：Bearer <token>）
	tokenString := r.Header.Get("Authorization")
	if tokenString == "" {
		utility.ResponseError(r, 401, "请先登录")
		r.Exit()
		return
	}
	// 验证令牌并解析用户ID
	userID, valid := utility.JWT.Validate(tokenString)
	if !valid {
		utility.ResponseError(r, 401, "令牌无效或已过期")
		r.Exit()
		return
	}
	// 将用户ID存入请求上下文（后续接口可直接获取）
	r.SetCtxVar("userID", userID)
	r.Middleware.Next()
}
